/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.fonafe.dao.impl.stored;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import oracle.jdbc.OracleTypes;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.StoredProcedure;
import pe.gob.fonafe.domain.InmuebleBean;

/**
 * @author czela
 */
public class ListarTopInmuebleSP extends StoredProcedure{

    private static final String PROC_PARAM ="USERFINAL.P_OBT_LIST_TOP_INMUEBLES";

    public ListarTopInmuebleSP(DataSource ds) {
        super(ds,PROC_PARAM);
        declareParameter(new SqlOutParameter("cCursor", OracleTypes.CURSOR,new ListarInmuebleRowMapper()));
        compile();
    }

    public Map execute() {
        Map inputs = new HashMap();
        return super.execute(inputs);
    }
    
    private static class ListarInmuebleRowMapper implements RowMapper<InmuebleBean>{

        public InmuebleBean mapRow(ResultSet rs, int rowNum) throws SQLException {
            InmuebleBean bean = new InmuebleBean();
            bean.setId(rs.getString("ID_INMUEBLE"));
            bean.setNombre(rs.getString("NOMBRE"));
            bean.setDescripcion(rs.getString("DESCRIPCION"));
            bean.setTipoMoneda(rs.getString("TIPO_MONEDA"));
            bean.setDireccion(rs.getString("DIRECCION"));
            bean.setAreaTerreno(rs.getString("AREA_TERRENO"));
            if(rs.getBlob("PLANOUBICACION") != null){
                bean.setPlanoUbicacion(rs.getBlob("PLANOUBICACION").getBytes(1, (int)rs.getBlob("PLANOUBICACION").length()));
            }
            bean.setTipoContrato(rs.getString("TIPOCONTRATO"));
            bean.setTipoInmueble(rs.getInt("tb_TipoInmueble_idTipoInmueble"));
            bean.setUbigeo(rs.getString("UBIGEO"));
            bean.setPrecio(rs.getString("PRECIO"));
            if(rs.getBlob("FOTO_PRINCIPAL") != null){
                bean.setFotoPrincipalBytes(rs.getBlob("FOTO_PRINCIPAL").getBytes(1, (int)rs.getBlob("FOTO_PRINCIPAL").length()));
            }
            bean.setFechaInmueble(rs.getDate("fecha_vencimiento"));
            bean.setNom_tipoInmueble(rs.getString("tipInmueble"));
            return bean;
        }
    }


    
}
